package com.zj.docker.service;

import com.google.common.collect.ImmutableSet;
import com.zj.docker.domain.Containers;
import com.zj.docker.enums.ContainerStatusEnum;
import com.zj.docker.vo.ResultVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Auther: zj
 * @Date: 2018/12/11 11:28
 * @Description:
 */
public interface ContainersService {

    //保存数据库的更新
    void saveOrUpdata(Containers containers);

    //删除容器
    void delete(Containers containers);


    /**
     * 创建容器
     * @param username
     * @param imageId
     * @param cmd
     * @param exportPorts
     * @param containerName
     * @param env
     * @param destination
     * @param time
     * @return
     */
    void createContainer(String username, String imageId, String[] cmd, ImmutableSet<String> exportPorts,
                         String containerName, String[] env, String[] destination, String time, String sessionId,
                         String method,
                         String url,
                         String ip,
                         String userAgent);

    /**
     * 获取容器当前的状态
     * @param containerId
     * @return
     */
    ContainerStatusEnum getStatus(String containerId);

    /**
     * 通过作者名查找所有容器,分页
     * @param author
     * @param pageIndex
     * @return
     */
    Page<Containers> listAllContainerByAuthorWithPage(String author, Integer pageIndex);

    /**
     * 通过容器id来查找容器
     * @param containerId
     * @return
     */
    Containers findOneByContainerId(String containerId);

    /**
     * 通过作者名查找所有容器
     * @param author
     * @return
     */
    List<Containers> listAllContainer(String author);

    /**
     * 查找所有容器
     * @return
     */
    List<Containers> listAllContainer();

}
